package qc.module.ehs.mapper;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import qc.common.core.enums.EhsEpibolyStatusEnum;
import qc.module.ehs.dto.epibolyunit.EpibolyUnitDto;
import qc.module.ehs.entity.EhsEpibolyUnit;

import java.util.List;

/**
 * EhsEpibolyUnitMapper
 * @author YRR
 * @create 2025-03-13 10:48
 */
@Mapper
public interface EhsEpibolyUnitMapper {
    EhsEpibolyUnitMapper MAPPER = Mappers.getMapper(EhsEpibolyUnitMapper.class);

    EhsEpibolyUnit toEntity(EpibolyUnitDto dto);

    @Mapping(target = "status", source = "status.index")
    EpibolyUnitDto toDto(EhsEpibolyUnit en);

    default EhsEpibolyUnit dtoToEntity(EpibolyUnitDto dto) {
        EhsEpibolyUnit entity = EhsEpibolyUnitMapper.MAPPER.toEntity(dto);
        entity.setStatus(getEpibolyUnitStatus(dto.getStatus()));
        return entity;
    }

    List<EpibolyUnitDto> toDtoList(List<EhsEpibolyUnit> ens);

    /**
     * dto转换为枚举类型
     * @param status 状态信息
     * @return EhsEpibolyStatusEnum
     */
    static EhsEpibolyStatusEnum getEpibolyUnitStatus(Integer status) {
        for (EhsEpibolyStatusEnum item : EhsEpibolyStatusEnum.values()) {
            if (item.getIndex() == status) {
                return item;
            }
        }
        return EhsEpibolyStatusEnum.COOPERATION;
    }
}
